package sistemaAcademico.interfaceUsuario.CursoMVC.view;

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

import sistemaAcademico.interfaceUsuario.CursoMVC.controle.CursoControlador;
import sistemaAcademico.interfaceUsuario.CursoMVC.excecao.CursoNaoEncontradoException;
import sistemaAcademico.interfaceUsuario.CursoMVC.excecao.CursoSemCodigoException;
import sistemaAcademico.negocio.Curso;


public class CursoFrameCadastrar extends JFrame implements ActionListener, CursoView{
	private static final long serialVersionUID = 1L;

	// Cria caixas de texto para os dados do curso
	private JTextField nome = new JTextField(10);
	private JTextField codigo = new JTextField(10);
	private JTextField totalCreditos = new JTextField(10);
	private JTextField totalSemestres = new JTextField(10);
	private JTextField turno = new JTextField(10);
	// private JTextField disciplinas = new JTextField(10);

	// Cria o botao para salvar o curso
	private JButton botao = new JButton("Salvar");

	public CursoFrameCadastrar() {
		// Atribui o titulo da janela
		setTitle("Cadastro de Curso");

		// Diz que o programa deve fechar quando a janela for fechada
		setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);

		// Cria um painel que cadastra os campos dos cursos
		JPanel painel = new JPanel();
		painel.setLayout(new GridLayout(5, 1));
		painel.add(new JLabel("Nome:"));
		painel.add(nome);
		painel.add(new JLabel("Codigo:"));
		painel.add(codigo);
		painel.add(new JLabel("Total de Creditos:"));
		painel.add(totalCreditos);
		painel.add(new JLabel("Total de semestres:"));
		painel.add(totalSemestres);
		painel.add(new JLabel("Turno:"));
		painel.add(turno);				

		// Informa que os eventos da caixa de texto do codigo e do botao serao
		// tratados pela propria janela
		codigo.addActionListener(this);
		
		botao.addActionListener(this);

		// Adiciona uma legenda ao "norte" da janela
		getContentPane().add(new JLabel("Informe os dados do Curso"),
				BorderLayout.NORTH);
		// Adiciona o painel criado no centro da janela
		getContentPane().add(painel, BorderLayout.CENTER);
		// Adiciona o botao criado no "sul" da janela
		getContentPane().add(botao, BorderLayout.SOUTH);

		// Redimensiona a janela permitindo a visualizacao dos componentes
		pack();

		// Posiciona no ponto (500,300)
		setLocation(500, 300);
	}
	// Captura eventos
		public void actionPerformed(ActionEvent ev) {
			if (ev.getSource() == botao) {
				try {
					CursoControlador.salvar(this);
					// JOptionPane.showMessageDialog(this, "Curso salvo!");
					setVisible(false);
				} catch (CursoSemCodigoException e) {
					JOptionPane.showMessageDialog(this, "Informe o codigo!");
				}
			} else if (ev.getSource() == codigo) {
				try {
					CursoControlador.carregar(this);
				} catch (CursoSemCodigoException e) {
					JOptionPane.showMessageDialog(this, "Informe o codigo!");
				} catch (CursoNaoEncontradoException e) {
					nome.setText("");
					codigo.setText("");
					totalCreditos.setText("");
					totalSemestres.setText("");
					turno.setText("");
				}
			}
		}

		public Curso getCurso() {
			Curso curso = new Curso();		
						
			curso.setNome(nome.getText());
			curso.setCodigo(codigo.getText());
			curso.setTotalCreditos(Integer.parseInt(totalCreditos.getText()));
			curso.setTotalSemestres(Integer.parseInt(totalSemestres.getText()));
			curso.setTurno(turno.getText().charAt(0));

			return curso;
		}

		public void setCurso(Curso curso) {
			nome.setText(curso.getNome());
			codigo.setText(curso.getCodigo());
			totalCreditos.setText(String.valueOf(curso.getTotalCreditos()));
			totalSemestres.setText(String.valueOf(curso.getTotalSemestres()));
			turno.setText(turno.getText());
			
		}
			
	public static void main(String[] args) {
		CursoFrameCadastrar janela = new CursoFrameCadastrar();
		janela.setVisible(true);
	}
}
